package edu.dayu.demo1;

import java.util.Arrays;

/**
 * 输入：numbers = [1,2,4,6,10], target = 8
 * 输出：[1,3]
 * 解释：2 与 6 之和等于目标数 8 。因此 index1 = 1, index2 = 3
 * 思路：首先数组是升序排列。且只有一对符合条件。 用最小的和最大的相加，然后比较，若大于 target 则 数组长度 --；
 *      前面依次递增。 最坏 O（n^2）
 *
 */
public class 排序数组中两个数字之和 {
    public static void main(String[] args) {
        int[] numbers = {2,3,4};
        int target = 6;
        System.out.println(Arrays.toString(twoSum(numbers,target)));
    }

    public static int[] twoSum(int[] numbers, int target) {
        int len = numbers.length-1;
        int[] num = new int[2];
        for (int i = 0; i < len; i++) {
            for (int j = len;j>i;j--){
                if (numbers[i]+numbers[j]>target){
                    len--;
                }else if (numbers[i]+numbers[j] == target){
                    num[0] = i;
                    num[1] = j;
                    return num;
                }else {
                    break;
                }
            }
        }
        return num;
    }
}
